Cerința
În clasa a IX-a A sunt M elevi, numerotați de la 1 la M și fiecare are un număr preferat P. Plictisiți de ora de informatică, au inventat următorul joc:
- pe o foaie de matematică desenează o tablă de joc de dimensiune
N, formată dinNlinii șiNcoloane, numerotate de la1laN; fiecare linie și fiecare coloană are câteNpătrățele - fiecare elev alege un pătrățel și desenează un
Xcentrat în pătrățelul ales, fiecare din cele4laturi având cel multPpătrățele desenate, fără a ieși de pe tabla de joc (să nu mâzgălească banca!!). - icsurile desenate de elevi se pot suprapune.
În figura de mai jos este reprezentat un X desenat de elevul care alege pătrățelul de coordonate i j și preferă numărul 3.
Cunoscând dimensiunea N a tablei de joc, numărul M de elevi, coordonatele alese de fiecare elev și numărul preferat al fiecărui elev, determinați câte pătrățele de pe tablă rămân nedesenate.
Date de intrare
Programul citește de la tastatură numărul N M, iar apoi M triplete i j p, reprezentând coordonatele pătrățelului ales și numărul preferat de fiecare elev.
Date de ieșire
Programul va afișa pe ecran numărul de pătrățele nedesenate.
Restricții și precizări
1 ≤ N ≤ 10001 ≤ M ≤ 1000001 ≤ i,j ≤ N0 ≤ p ≤ N/2
Exemplu
Intrare
10 5 1 2 1 6 6 3 7 3 2 2 5 2 9 8 3
Ieșire
62
Explicație
Exemplul corespunde tablei de joc de mai jos. Unele pătrățele au fost desenate de mai multe ori.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Icsuri:
#include <iostream>
#include <algorithm>
using namespace std;
int n, m , a[1001][1001];
int dx[]={ 1, 1,-1,-1},
dy[]={ 1,-1, 1,-1};
int main()
{
cin >> n >> m;
for( ; m ; m --)
{
int i ,j , p;
cin >> i >> j >> p;
a[i][j] = 1;
for(int x = 1 ; x <= p ; x ++)
{
for(int k = 0 ; k < 4 ; k ++)
if( i+x * dx[k] > 0 && i + x * dx[k] <= n && j + x * dy[k] > 0 && j + x * dy[k] <= n)
a[i + x * dx[k]][j + x * dy[k]] = 1;
}
}
int cnt = 0;
for(int j = 1 ; j <= n ; j++)
for(int i = 1 ; i <= n ; i ++)
if(a[i][j] == 0)
cnt ++;
cout << cnt << endl;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa
.
Rezolvarea problemei #1751 Icsuri
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1751 Icsuri de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!