fork download
  1. #define s(n) scanf("%d",&n)
  2. #define sl(n) scanf("%lld",&n)
  3. #define pln(n) printf("%lld\n",n)
  4. #define forall(i,a,b) for(int i=a;i<=b;i++)
  5. #include<iostream>
  6. #include<cstdio>
  7. #include<vector>
  8. #include<cstdlib>
  9. #include<cmath>
  10. #include<string.h>
  11. #include<algorithm>
  12. #include<map>
  13. #include<set>
  14. using namespace std;
  15. typedef long long ll;
  16. typedef pair<int, int> ii;
  17.  
  18. int main()
  19. {
  20. // #ifndef ONLINE_JUDGE
  21. //freopen("in.txt","r",stdin);
  22. //freopen("ina.txt","w",stdout);
  23. // #endif
  24.  
  25. ll n,m,p;
  26. sl(n);sl(m);sl(p);
  27.  
  28.  
  29. pair<ll,ll> a[p];
  30.  
  31.  
  32. for(ll i=0;i<p;i++)
  33. {
  34. ll x,y;
  35. sl(x);sl(y);
  36. a[i].first=x-1;
  37. a[i].second=y-1;
  38.  
  39. }
  40.  
  41. if(m==1)
  42. {
  43. for(int i=0;i<n;i++)
  44. cout<<"0\n";
  45. }
  46.  
  47. else
  48. {
  49.  
  50. sort(a,a+p);
  51.  
  52. cout<<"";
  53. ll curr=0;
  54. for(ll i=0;i<n;i++)
  55. {
  56. ll z[m];
  57. memset(z,0,sizeof(z));
  58.  
  59.  
  60.  
  61. while((a[curr].first==i)&&curr!=p)
  62. {
  63. z[a[curr].second]++;
  64.  
  65. curr++;
  66. }
  67. /* for(int it=0;it<m;it++)
  68. {
  69. cout<<z[it];
  70. }
  71. cout<<endl;*/
  72. int flag=0;
  73. for(ll j=m;j>0;j--)
  74. {
  75. if(z[j-1]-z[j]>1)
  76. {
  77. flag=1;
  78. break;
  79. }
  80. }
  81.  
  82.  
  83. if(flag==1)
  84. printf("-1\n");
  85. else
  86. {
  87. pln(m+z[m-1]-(1+z[0]));
  88. }
  89. }
  90.  
  91. }
  92. return 0;
  93. }
Success #stdin #stdout 0s 3304KB
stdin
4 4 6
2 2
3 2 
3 2 
4 3
4 4
4 3
stdout
3
3
-1
4