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ă dinN
linii șiN
coloane, numerotate de la1
laN
; fiecare linie și fiecare coloană are câteN
pătrățele - fiecare elev alege un pătrățel și desenează un
X
centrat în pătrățelul ales, fiecare din cele4
laturi având cel multP
pă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 ≤ 1000
1 ≤ M ≤ 100000
1 ≤ i,j ≤ N
0 ≤ 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!