답안 #211637

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
211637 2020-03-20T21:16:01 Z tleontest1 Bob (COCI14_bob) C++14
24 / 120
185 ms 16760 KB
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")

#include <bits/stdc++.h>

using namespace std;

typedef long long lo;
typedef pair< lo,lo > PII;

#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define FOR for(int i=1;i<=n;i++)
#define mid ((start+end)/2)
#define int long long
#define ort ((bas+son)/2)

const lo MAX = -1000000000000000000;
const lo MIN = 1000000000000000000;
const lo inf = 1000000000;
const lo KOK = 100000;
const lo LOG = 30;
const lo li = 1005;
const lo mod = 1000000007;

int n,m,b[li],a[li][li],k,flag,t,dp[li][li],dp1[li],dp2[li];
int cev;
string s;
stack<PII> st[li];
vector<int> v;

main(void){
	scanf("%lld %lld",&n,&m);
	FOR{
		for(int j=1;j<=m;j++)scanf("%lld",&a[i][j]);
	}
	FOR{
		int esit=1;
		for(int j=1;j<=m;j++){
			if(a[i][j]!=a[i][j-1] && j!=1)esit=1;
			if(a[i][j]==a[i][j-1] && j!=1)esit++;
			//~ cout<<"at"<<dp1[1]<<"at"<<endl;
			int aktar=dp[i-1][j];
			if(a[i][j]!=a[i-1][j] && i!=1){
				aktar=0;
				while(st[j].size())st[j].pop();
			}
			int say=0;
			dp[i][j]=aktar;
			while(st[j].size()){
				if(esit<=st[j].top().fi){
					say++;
					dp[i][j]-=st[j].top().fi*st[j].top().se;
					dp[i][j]+=esit*st[j].top().se;
					st[j].pop();
				}
				else break;
			}
			st[j].push(mp(esit,++say));
			dp[i][j]+=esit;
			
		}
	}
	FOR{
		for(int j=1;j<=m;j++){
			cev+=dp[i][j];
			//~ cout<<dp[i][j]<<" ";
		}
		//~ cout<<endl;
	}
	printf("%lld\n",cev);
	return 0;
}

Compilation message

bob.cpp:36:10: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(void){
          ^
bob.cpp: In function 'int main()':
bob.cpp:37:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%lld %lld",&n,&m);
  ~~~~~^~~~~~~~~~~~~~~~~~~
bob.cpp:39:29: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   for(int j=1;j<=m;j++)scanf("%lld",&a[i][j]);
                        ~~~~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 1408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 37 ms 8824 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 39 ms 8824 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 8824 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 41 ms 8872 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 161 ms 16760 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 185 ms 16760 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 183 ms 16760 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 179 ms 16760 KB Output isn't correct
2 Halted 0 ms 0 KB -