#pragma GCC optimize ("Ofast")
#include<bits/stdc++.h>
using namespace std;
inline int isLeapYear( const int y) {
if ( y% 4 ) {
return 0 ;
}
if ( y% 100 ) {
return 1 ;
}
if ( y% 400 ) {
return 0 ;
}
return 1 ;
}
inline int numOfDaysInMonth( const int m) {
if ( m== 2 ) {
return 28 ;
}
if ( m== 4 || m== 6 || m== 9 || m== 11 ) {
return 30 ;
}
return 31 ;
}
inline int numOfDaysInMonth( const int y, const int m) {
if ( m== 2 ) {
return numOfDaysInMonth( m) + isLeapYear( y) ;
}
else {
return numOfDaysInMonth( m) ;
}
}
#define main dummy_main
int main( ) {
return 0 ;
}
#undef main
class Solution{
public :
int dayOfYear( string date) {
int d, i, m, res= 0 , y;
y = atoi ( date.c_str ( ) ) ;
m = atoi ( date.c_str ( ) + 5 ) ;
d = atoi ( date.c_str ( ) + 8 ) ;
for ( i= ( 1 ) ; i< ( m) ; i++ ) {
res + = numOfDaysInMonth( y,i) ;
}
res + = d;
return res;
}
}
;
// cLay varsion 20190818-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// class Solution {
// public:
// int dayOfYear(string date) {
// int y, m, d, res=0, i;
// y = atoi(date.c_str());
// m = atoi(date.c_str()+5);
// d = atoi(date.c_str()+8);
// rep(i,1,m) res += numOfDaysInMonth(y,i);
// res += d;
// return res;
// }
// };
I3ByYWdtYSBHQ0Mgb3B0aW1pemUgKCJPZmFzdCIpCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmlubGluZSBpbnQgaXNMZWFwWWVhcihjb25zdCBpbnQgeSl7CiAgaWYoeSU0KXsKICAgIHJldHVybiAwOwogIH0KICBpZih5JTEwMCl7CiAgICByZXR1cm4gMTsKICB9CiAgaWYoeSU0MDApewogICAgcmV0dXJuIDA7CiAgfQogIHJldHVybiAxOwp9CmlubGluZSBpbnQgbnVtT2ZEYXlzSW5Nb250aChjb25zdCBpbnQgbSl7CiAgaWYobT09Mil7CiAgICByZXR1cm4gMjg7CiAgfQogIGlmKG09PTR8fG09PTZ8fG09PTl8fG09PTExKXsKICAgIHJldHVybiAzMDsKICB9CiAgcmV0dXJuIDMxOwp9CmlubGluZSBpbnQgbnVtT2ZEYXlzSW5Nb250aChjb25zdCBpbnQgeSwgY29uc3QgaW50IG0pewogIGlmKG09PTIpewogICAgcmV0dXJuIG51bU9mRGF5c0luTW9udGgobSkrIGlzTGVhcFllYXIoeSk7CiAgfQogIGVsc2V7CiAgICByZXR1cm4gbnVtT2ZEYXlzSW5Nb250aChtKTsKICB9Cn0KI2RlZmluZSBtYWluIGR1bW15X21haW4KaW50IG1haW4oKXsKICByZXR1cm4gMDsKfQojdW5kZWYgbWFpbgpjbGFzcyBTb2x1dGlvbnsKICBwdWJsaWM6CiAgaW50IGRheU9mWWVhcihzdHJpbmcgZGF0ZSl7CiAgICBpbnQgZCwgaSwgbSwgcmVzPTAsIHk7CiAgICB5ID0gYXRvaShkYXRlLmNfc3RyKCkpOwogICAgbSA9IGF0b2koZGF0ZS5jX3N0cigpKzUpOwogICAgZCA9IGF0b2koZGF0ZS5jX3N0cigpKzgpOwogICAgZm9yKGk9KDEpO2k8KG0pO2krKyl7CiAgICAgIHJlcyArPSBudW1PZkRheXNJbk1vbnRoKHksaSk7CiAgICB9CiAgICByZXMgKz0gZDsKICAgIHJldHVybiByZXM7CiAgfQp9CjsKLy8gY0xheSB2YXJzaW9uIDIwMTkwODE4LTEKCi8vIC0tLSBvcmlnaW5hbCBjb2RlIC0tLQovLyAjZGVmaW5lIG1haW4gZHVtbXlfbWFpbgovLyB7fQovLyAjdW5kZWYgbWFpbgovLyAKLy8gY2xhc3MgU29sdXRpb24gewovLyBwdWJsaWM6Ci8vICAgaW50IGRheU9mWWVhcihzdHJpbmcgZGF0ZSkgewovLyAgICAgaW50IHksIG0sIGQsIHJlcz0wLCBpOwovLyAgICAgeSA9IGF0b2koZGF0ZS5jX3N0cigpKTsKLy8gICAgIG0gPSBhdG9pKGRhdGUuY19zdHIoKSs1KTsKLy8gICAgIGQgPSBhdG9pKGRhdGUuY19zdHIoKSs4KTsKLy8gICAgIHJlcChpLDEsbSkgcmVzICs9IG51bU9mRGF5c0luTW9udGgoeSxpKTsKLy8gICAgIHJlcyArPSBkOwovLyAgICAgcmV0dXJuIHJlczsKLy8gICB9Ci8vIH07Cg==